package la.iok.hzsvn.lewin.movie.cloud.service;

import la.iok.hzsvn.lewin.movie.cloud.model.TokenInfo;
import la.iok.hzsvn.lewin.movie.cloud.model.UserDeviceParam;
import la.iok.hzsvn.lewin.movie.cloud.model.WxLoginParam;
import la.iok.hzsvn.share.annotations.NotNull;
import la.iok.hzsvn.share.response.SingleDataResponse;

public interface WxInvoker {
    /**
     * 通过wx.login获取的授权码进行登录。需要用户已经绑定微信身份到系统中
     * @param code wx.login获取的用户时间授权码
     * @param device 登录设备,可以为null
     * @return 用户登录令牌
     */
    @NotNull
    SingleDataResponse<TokenInfo> code2Session(String code, UserDeviceParam device, Integer client);

    /**
     * 用户通过手机号授权登录。code2Session碰到用户未绑定的时候再次发起授权之后调用
     * @param param 获取用户手机的授权码及sessionID
     * @return 用户登录令牌
     */
    TokenInfo phoneNumber(@NotNull WxLoginParam param);
}
